Streaming media delivery system

ABSTRACT

Streaming media, such as audio or video files, is sent via the Internet. The media are immediately played on a user&#39;s computer. Audio/video data is transmitted from the server under control of a transport mechanism. A server buffer is prefilled with a predetermined amount of the audio/video data. When the transport mechanism causes data to be sent to the user&#39;s computer, it is sent more rapidly than it is played out by the user system. The audio/video data in the user buffer accumulates; and interruptions in playback as well as temporary modem delays are avoided.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/815,040, filed Jan. 25, 2013 (published on Jun. 13, 2013 as U.S.patent publication number 2013/0151724 A1), which was a continuation ofU.S. patent application Ser. No. 13/385,375, filed Feb. 16, 2012(published on Jun. 28, 2012 as U.S. patent publication number2012/0166669 A1 and now U.S. Pat. No. 8,364,839, issued Jan. 29, 2013),which was a continuation of U.S. patent application Ser. No. 12/800,177,filed May 10, 2010 (published on Sep. 2, 2010 as U.S. patent publicationnumber 2010/0223362 A1 and now U.S. Pat. No. 8,185,611, issued May 22,2012), which was a continuation of U.S. patent application Ser. No.10/893,814, filed Jul. 19, 2004 (published on Dec. 9, 2004 as U.S.patent publication number 2004/0249969 A1, and now U.S. Pat. No.7,716,358, issued May 11, 2010), which was a continuation-in-part ofU.S. patent application Ser. No. 09/819,337, filed Mar. 28, 2001 (nowU.S. Pat. No. 6,766,376, issued Jul. 20, 2004), which was anonprovisional of U.S. provisional patent application Ser. No.60/231,997, filed Sep. 12, 2000 and now expired; and it claims thebenefit, under 35 U.S.C. § 120, of the respective filing dates of saidnonprovisional applications, and the benefit under 35 U.S.C. § 119(e) ofsaid provisional application, as well as benefit under 35 U.S.C. §§ 120and 119(e) (as applicable) of the filing dates of: copending U.S. patentapplication Ser. No. 10/825,869, filed Apr. 16, 2004 (published on Dec.23, 2004 as U.S. patent publication number 2004/260828 A1), which was acontinuation of said U.S. patent application Ser. No. 09/819,337, whichwas a nonprovisional of said provisional patent application Ser. No.60/231,997; and hereby incorporates by reference the entire disclosureof each of said prior applications. This application furtherincorporates by reference the entire disclosure of U.S. patentapplication Ser. No. 13/374,942, filed Jan. 24, 2012 (published on Jun.14, 2012 as U.S. patent publication number 2012/0151083 A1, and now U.S.Pat. No. 8,327,011, issued Dec. 4, 2012, which was a continuation ofU.S. patent application Ser. No. 12/800,152, filed May 10, 2010(published on Sep. 16, 2010 as U.S. patent publication number2010/0235536 A1, and now U.S. Pat. No. 8,122,141, issued Feb. 21, 2012),which was also a continuation of said U.S. patent application Ser. No.10/893,814.

BACKGROUND OF THE INVENTION Field of the Invention

The present invention relates to multimedia computer communicationsystems; and more particularly, to systems and methods for deliveringstreaming media, such as audio and video, on the Internet.

Description of the Related Art

Prior to the development of Internet streaming media technologies, audioand video were formatted into files, which users needed to download intheir entirety to their computers before the files could be heard orviewed. Real time, continuous media, as from a radio station, was notsuitable for this arrangement, in that a file of finite size must becreated so it could be downloaded. The advent of streaming mediatechnologies allowed users to listen to or view the files as they werebeing downloaded, and allowed users to “tune-in” to a continuous mediabroadcast, or “stream”, such as from a radio station.

Sending audio or video files via a network is known in the art. U.S.Pat. No. 6,029,194 to Tilt describes a media server for the distributionof audio/video over networks, in which retrieved media frames aretransferred to a FIFO buffer. A clock rate for a local clock is adjustedaccording to the fullness of the buffer. The media frames from thebuffer are sent in the form of data packets over the networks inresponse to interrupts generated by the local clock. In this manner, thetiming for the media frames is controlled by the user to assure acontinuous stream of video during editing. U.S. Pat. No. 6,014,706 toCannon, et al. discloses an apparatus and method for displaying streameddigital video data on a client computer. The client computer isconfigured to receive the streamed digital video data from a servercomputer via a computer network.

The streamed digital video data is transmitted from the server computerto the client computer as a stream of video frames. U.S. Pat. No.6,002,720, to Yurt, et al. discloses a system for distributing videoand/or audio information, wherein digital signal processing is employedto achieve high rates of data compression. U.S. Pat. No. 5,923,655, toVeschi et al. discloses a system and method for communicatingaudio/video data in a packet-based computer network, whereintransmission of data packets through the computer network requiresvariable periods of transmission time. U.S. Pat. No. 5,922,048 to Emuradiscloses a video server apparatus having a stream control section thatdetermines a keyframe readout interval and a keyframe playback interval,which satisfy a playback speed designated by a terminal apparatus.Finally, U.S. Pat. No. 6,014,694 to Aharoni, et al. discloses a systemand method for adaptively transporting video over networks, includingthe Internet, wherein the available bandwidth varies with time.

Despite these developments, users viewing or listening to streamingcontent over Internet connections often encounter interruptions, due tothe frequency of unanticipated transmission delays and losses that areinherent in many Internet protocols. These interruptions are commonlyreferred to as “dropouts”, meaning that the data flow to the user hasbeen interrupted (i.e., the audio “drops out”).

Dropouts can be extremely annoying—for example, while listening tomusic. The current state-of-the-art solution to the problem uses apre-buffering technique to store up enough audio or video data in theuser's computer so that it can play the audio or video with a minimum ofdropouts. This process requires the user to wait until enough of themedia file is buffered in memory before listening or viewing can begin.The media data is delivered by a server computer, which has available toit the source of the media data, such as by a connection to a radiostation. When the user connects to the server via the Internet,audio/video output at the user's system is delayed while the user'sbuffer is filled to a predetermined level. Typical pre-buffering waittimes range from ten to twenty seconds or more, determined by the vendorproviding the audio or video media. Even with this pre-bufferingprocess, interruptions in playback still occur.

In this process, the user has a software application on the computercommonly called a “media player”. Using the features built into themedia player, the user starts the audio or video stream, typically byclicking on a “start” button, and waits ten to twenty seconds or sobefore the material starts playing. During this time data is beingreceived from the source and filling the media player's buffer. Theaudio or video data is delivered from the source at the rate it is to beplayed out. If, for example, the user is listening to an audio streamencoded to be played-out at 24,000 bits per second, the source sends theaudio data at the rate of 24,000 bits per second. Provided that the userwaits ten seconds, and the receipt of the buffering data has not beeninterrupted, there is enough media data stored in the buffer to play forten seconds.

Gaps in the receipt of audio/video data, due to Internet slowdowns,cause the buffer to deplete. Because transmission of audio/video mediadata to the user takes place at the rate it is played out, the user'sbuffer level can never be increased or replenished while it is playing.Thus, gaps in the receipt of audio/video media data inexorably cause thebuffer level to decrease from its initial level. In time, extended orrepeated occurrences of these gaps empty the user's buffer. Theaudio/video material stops playing, and the buffer must be refilled toits original predetermined level before playing of the media resumes.

By way of illustration, if, in a ten second pre-buffering scenario, datareception stopped the instant that the media started playing, it wouldplay for exactly ten seconds. Once the media data starts playing, itplays out of the buffer as new media data replenishes the buffer. Theincoming data rate equals the rate at which the data is played out ofthe user's buffer, assuming the receipt of data across the Internet isunimpeded. If there are no interruptions in the receipt of the mediadata for the duration of the time the user listens to or watches thematerial, the buffer level remains constant and there will still be tenseconds of data stored in the media player's buffer when the user stopsthe player.

On the other hand, if the media player encounters interruptions totalingsix seconds while playing the material, there would only be four secondsof media data remaining in the buffer when the user stopped it. If datareception interruptions at any time during the playing exceed tenseconds, the user's media player buffer becomes exhausted. There is nomedia data to play, and the audio or video stops—a dropout has occurred.At this point a software mechanism in the media player stops attemptingto play any more of the material, and starts the buffering processagain. The media player remains silent until the buffer refills, atwhich time the media player will once again start playing the material.This pattern has brought about considerable consumer frustration withstreaming media over the Internet.

BRIEF SUMMARY OF THE INVENTION

There is a need for improved systems and methods for deliveringstreaming content over the Internet or other communications medium,which facilitate continuous transmission of streaming content, respondon demand without objectionable buffering delay, and perform withoutdisruption or dropouts.

To address these objectives, various embodiments for deliveringstreaming content are provided, which envision that both the server anduser systems involved in the content delivery may have bufferingcapacity. The embodiments make varying uses of this capacity tofacilitate continuous content transmission on demand. Nearlyinstantaneous playback is achieved, while maintaining protection againstplayback interruption.

In one aspect, the server and user-sides of the transmission arecoordinated, by (a) sending initial streaming media elements to the usersystem at a sending rate more rapid than the playback rate, to fill theuser buffer; and (b) after the user buffer has been filled, sendingfurther streaming media data elements to the user system at about theplayback rate.

In another embodiment, the user system may be used to regulatetransmission of streaming media to it, by a streaming media server. Insuch embodiment, the server may operate by (a) assigning identifiers tothe sequential media data elements comprising the program; (b) receivingrequests from the user system for media data elements corresponding tospecified identifiers; and (c) sending media data elements to the usersystem responsive to said requests. A user system used in connectionwith such an embodiment may operate by (i) maintaining a record of theidentifier of the last sequential media data element that has beenreceived by said player; (ii) requesting transmission of the nextsequential media data elements following said last sequential media dataelement, as said media player requires for continuous and uninterruptedplayback.

Other aspects and advantages of the invention will be apparent from theaccompanying drawings and the detailed description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention will be more fully understood and further advantages willbecome apparent when reference is had to the following detaileddescription and the accompanying drawings, in which:

FIG. 1 is a schematic/block diagram illustrating the elements of astreaming media buffering system in accordance with one embodiment ofthe present invention;

FIG. 2 is a schematic/block diagram of an alternative embodiment of thesystem shown by FIG. 1; and

FIG. 3 is a flowchart illustrating a method employed in one embodimentof the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following is a detailed description of certain embodiments of theinvention chosen to provide illustrative examples of how it maypreferably be implemented.

Audio and video media must play out over a period of time. Thus, inconsidering the delivery of such media, it is more appropriate incertain respects to think of bandwidth requirements than file size. Thebandwidth requirement of audio or video media refers to the data rate inbits per second that must be transmitted and received in order to listento or view the material uninterrupted.

Transmitting the audio or video material over a connection slower thanthe bandwidth requirement results in unsatisfactory viewing orlistening, if viewing or listening is possible at all. The connectionavailable may, for example, be by dialup modem, which has a maximumreceive data rate of 56,000 bits per second. Audio and video encoded fordistribution over the Internet may be compressed to be listenable orviewable within such a 56,000 bits per second bandwidth. Requirementsfor achieving adequate audio and video over the Internet may consume aconsiderable portion of the listener's available bandwidth.

There are two types of encoding schemes used for audio and videomaterial—“Variable Bit Rate” (VBR), and “Constant Bit Rate” (CBR). CBRencoding represents the encoded media with a constant bit rate persecond, regardless of the complexity of the material being encoded. Forexample, if an audio source is encoded at 20 kilobits per second at aConstant Bit Rate, the media data being produced from the encoding is at20 kilobits per second, whether the audio material is complex (e.g.,symphonic) or silence. Variable Bit Rate encoding uses a variable numberof bits to represent sounds or video, with more bits required forcomplex material (e.g., symphonic sounds or action scenes) than forsimple sounds, silence, or still scenes. The most usual encoding schemeused for streaming media is CBR, because the resulting data rate is morepredictable than for VBR. Statements in this specification concerning“constant” data rates and the like should be understood as subject toappropriate variation where VBR-encoded data may be involved.

Even if a user's Internet connection has the requisite average bandwidthcapacity to allow reception of the program, the actual rate of deliveryof data to the user can fluctuate widely above, and more particularly,below, this average, as a function of the quality of the user'sconnectivity at any given time. Internet connection quality can varyrapidly over time, with two primary factors responsible for degradationof the instantaneous bandwidth actually available to the user. Thesefactors are the quality of the user's Internet connection, which canhave periods of interference causing reduced available bandwidth, andmomentary Internet congestion at various points along the route overwhich the user's data flows. Each of these factors can cause delays andinterruptions in the transmission of data to the user. Internet datacommunications devices such as routers are designed to drop data packetsif they get overloaded. For material that is not time sensitive, thesedropped packets will usually be resent, and the user will eventually bepresented with the material. However, since streaming media is timesensitive, dropped packets can have a significant impact on the receiptand playback of an audio or video stream. Such degradation in thereceipt of Internet data is very common, and prevent most users frombeing able to listen to or view streaming media without interruptionunless some special provisions have been incorporated into the user'scomputer software to accommodate data transmission interruptions.

There are two fundamental types of streaming media, which affect, insome respects, the requirements for smooth and continuous delivery: (i)material that originates from a source having a realtime nature, such asa radio or TV broadcast, and (ii) material that originates from anon-real-time source such as from a disk file. An example ofnon-real-time material might be a piece of music stored as a disk file,or a portion of a broadcast that originally was realtime, perhapsyesterday's TV evening news, and was recorded into a disk file. Forpurposes of clarity within this document, streaming media of type (i)will be referred to as “real time” or “broadcast” media, and streamingmedia of type (ii) will be referred to as “file based” media.

In many respects, both streaming media types are handled similarly inconventional systems, and both are handled similarly (in a number ofrespects) by the streaming media delivery system of the presentinvention. Nevertheless, the two streaming media types are readilydistinguished. Broadcast streaming media has as its source a system orarrangement that by definition can only be transmitted to users as fastas the material is generated; for example, a disk jockey speaking into amicrophone. File based media, on the other hand, can be transmitted tousers at any available data rate, since in the context of datacommunications, the time required for reading a small portion of datafrom a file residing entirely on a locally accessible, random accessstorage device may be considered negligible.

In conventional systems for streaming media over the Internet, mediadata (whether real-time or file based) is simply transmitted from theserver to the user at the rate at which it will be played out (the“playback rate”), regardless of the data rate capabilities of theconnection between the server and the user.

Conventional streaming media systems may incorporate server-sidebuffering systems for programmatic purposes. For example, the system maybuffer media data at the server for the purpose of packetassembly/disassembly. Media data may also be buffered at the server topermit programming conveniences such as dealing with blocks of data of aspecific size. However, conventional streaming media systems have notutilized server-side buffering for the purpose of mitigating long termInternet performance degradation. Rather, prior art systems, in whichdata is continuously transmitted at the playback rate, have performedbuffering for continuity purposes solely on the user side, with theconsequences discussed above of startup delays and dropouts. The presentinvention addresses such shortcomings.

The present invention provides a system and method for deliveringstreaming media, such as audio or video media, via the Internet or othercommunications medium. Immediate playing of the media on a user'scomputer is afforded, while reducing interruptions in playback due toInternet congestion, and temporary modem delays due to noisy lines.Nearly instantaneous playback is achieved, while maintaining protectionagainst playback interruption. Delayed starts, heretofore required toprovide protection against interruption, are avoided. Data lost due tointerruptions in the receipt of media data by the media player can berecovered while the player continues to play out the audio or videomaterial. If the interruptions are so severe as to deplete the user'sbuffer and stop the play out, the media player can quickly recover aswell, by beginning to play out again without waiting to first build upthe buffer, as soon as the media player begins to receive media dataelements.

In one embodiment, the invention provides a system for distributing viathe Internet streaming media composed of a plurality of time-sequenceddata elements. As shown in FIG. 1, the system is provided with a server12 connected to the Internet 10 for transmitting the streaming mediadata elements. Associated with the server 12 is a server buffer 14 forstoring at least one of the data elements for transmission, and a buffermanager 16. Buffer 14 is a conventional computer storage mechanism suchas a hard disk, as shown for convenience of illustration, or,preferably, an electronic storage arrangement such as Random AccessMemory (RAM).

The media may come from a live source, shown as 26 in FIG. 1, or from astored file on the server 12, or another storage device, such as a harddrive.

A number of different implementations of such a server, involvingdifferent ways of handling server buffer 14, will be discussed.

In the various implementations, there is in each case at least one usercomputer 18 (or similar device) connected to the server 12 via theInternet 10 or other data communications medium. User computer 18 isassociated with media player software incorporating user buffer 20. Theuser buffer 20 is provided with means for storing a predetermined numberof the data elements. User buffer 20 is a conventional computer storagemechanism such as a hard disk, or, preferably, an electronic storagearrangement such as Random Access Memory (RAM) as suggested by theillustration. A buffer manager 22 is also associated with the usercomputer 18. The buffer manager 22, having the form of software orfirmware, is provided with means for receiving and storing apredetermined number of media data elements which are receivedsequentially by the media player, playing the data out sequentially asaudio and/or video, and deleting media data elements from the buffer asthey are played out (or displacing them by newly arrived elements). Asdata is played out, the next sequential data elements are received fromthe server in such a fashion as to approximately maintain thepredetermined number of data elements in the user's buffer. It should beunderstood that data might arrive at the media player out-of-sequenceand that processes in the media player or the media player buffermanager are responsible for properly arranging this data.

Alternatively, user computer 18 may be replaced by an Internet radio orInternet Appliance, which is comprised of a dedicated processor forreceiving Internet radio or audio/video material. Examples of suchdevices might range from familiar computing devices such as palmtops,PDAs (Personal Digital Assistants), and wireless phones, to devices thatappear and operate similarly to conventional consumer electronic devicessuch as radios and televisions, but with the additional capability ofInternet access.

FIFO Server Buffer Implementation

There are a large number of ways of managing server buffer 14 in orderto implement the systems and methods described in this specification. Inone implementation, buffer manager 16 is adapted to effectively renderserver buffer 14 a FIFO device. In this implementation, buffer manager16 is provided in the form of software or firmware that provides meansfor: receiving the media data; supplying media data in order to the FIFObuffer; supplying the buffer 14 with a predetermined number of dataelements; maintaining pointers 24 a through 24 n into the buffer, onefor each user computer indicating the last media data element that hasbeen sent to that user, thus indicating the next element or elements tobe sent; and, once the FIFO buffer is full, deleting (or displacing) theoldest data element in the buffer as each new data element is received.These means are arranged to maintain the pre-determined number of dataelements in the FIFO buffer. Buffer Manager 16 may also comprise meansfor digitizing, encoding, and packetizing the media data, and formattingmedia data according to the requirements of buffer 14.

Data Window Buffer Implementation

If the media source is file based, such as a music clip stored as a diskfile, and if the disk file is stored on the server or an associatedserver computer, the server's connection to the source could beconsidered to be near instantaneous. In this case, rather thanaudio/video data filling and depleting the buffer 14, an amount ofaudio/video data equivalent to the desired buffer size may be logicallyconstituted as a FIFO buffer. Such a construct is commonly called a datawindow. The data window moves on a time-sequenced basis through themedia data file, thus defining the contents of the buffer on amoment-by-moment basis and performing the equivalent functions toreceiving a new data element and deleting the oldest data element.

Example Buffering Methods

In an arrangement that receives media data directly or indirectly from areal-time source, such as a radio station, server buffer 14 might be setto hold (for example) 30 seconds of media data. Because the sourceproduces media data in real time, the media data is delivered to theserver approximately at the rate it is generated.

Of course, there can be variability in this data delivery process due tonetworking, disk accesses, and so on, causing the delivery rate of themedia data to be variable over short periods of time, typically measuredin seconds. But over a longer period of time measured in minutes or tensof minutes or longer, the media data is delivered from source to serverat the rate it is generated, and the server in turn provides that mediadata to the FIFO buffer at that same rate. Since CBR encoding istypically used for streaming media, the media data is generated,received by the server, and provided to the buffer approximately at afixed rate.

The server buffer 14 is filled the first time the media sourceconnection is established or a disk file is read. The amount ispreferably adequate to bridge gaps typical of Internet and modem delaysto the user. This buffer may, for example, hold enough data elements forabout one minute of play.

Once server buffer 14 is full, for each new data element received intothe buffer the oldest data element is deleted (or displaced) from thebuffer. In some implementations, requests from user computers to connectmay not be accepted until server buffer 14 is full.

Once a connection is made to a user's computer (e.g., user computer 18),server 12 sends the media data to the user computer in the followingmanner. First, media data is sent to the user computer at a rate fasterthan the playback rate, which may be the highest rate that the dataconnection between the server and the user computer will support, or anylower rate that is a higher rate than the playback rate (referred toherein as a “higher than playback” rate), until the predetermined amountof data that had been stored in the server buffer has been transferredto the user's computer. Once the contents of server buffer 14 has beentransferred, a steady state condition is reached wherein as each mediadata element arrives at server 12, it is immediately sent out to theuser computer. In this steady state condition, the media data is sent ata rate that matches the constant fill rate of the server buffer, and isreceived at the same rate by the user computer if there are nointerruptions in the transmission of media data between the server andthe user's computer (with some variation in the case of VBR content). Ifinterruptions have interfered with the arrival of sent media data to theuser's computer, that data may have been “dropped” by routers in theInternet and needs to be resent. This causes data to “back up” into theserver FIFO for that user.

A data communications transport mechanism, such as the TCP protocol, maybe used for the reliable delivery of data in an ordered sequence fromthe source of the media data to the server, or from the server to themedia player software of the user computer. Resending missing data isthe responsibility of the reliable transport mechanism. The serverbuffer 14 “sends” data by delivering it to the transport mechanism. Thetransport mechanism actually manages transmission of the data across thecommunications medium, and has processes to determine if all the datathat has been sent has been received by the destination. If not, missingpieces of data are automatically resent to the destination, and arearranged to be delivered to the target software on the destinationsystem in an ordered fashion. In this example, the destination is usercomputer 18, and the target software on the destination system is themedia player. If the transport mechanism determines that data ismissing, it retransmits that data to the destination at a higher thanplayback rate. In another method of operation, server 12 can use anunreliable transport mechanism, such as UDP, and rely on a streamingsoftware process to manage data delivery and the resending of dataelements not received by the media player.

All media data to be delivered to a user computer may be sent at ahigher than playback rate, either by the server buffer 14 passing mediadata to the transport mechanism, or by the transport mechanismdelivering or redelivering the media data to the user computer.

This is enabled by buffering data at the server 12, and is distinctlydifferent from prior art, in which media data is only sent from theserver 12 to the user computer 18 at the rate at which it is to beplayed out.

As an example of the preceding description, if the server had been setto store 30 seconds of audio in its buffer, when a user connects, that30 seconds worth of media data is transferred to the user's media playerbuffer at a higher than playback rate. The media player can beginplaying as soon as it has received a very minimum amount of data,perhaps comprising only a single packet of media data.

For ease of understanding, consider the server buffer and the mediaplayer buffer to be an elastic system that between the two stores (forexample) up 30 seconds of audio data. The server starts with 30 secondsof buffered audio data which it transfers to the media player until theserver has no buffered media data and the media player has 30 seconds ofbuffered media data. Regardless of how much of the buffered media datahas been transmitted to the media player, there always is 30 seconds ofmedia data being buffered between the two locations. Consequently, theaudio being played out by the media player will always be 30 secondsbehind the audio at the source. If there were a media player in theradio station studio, an announcer would hear themselves through themedia player with a 30 second delay.

Connections from the server 12 through the Internet 10 commonly are muchfaster than the data rate required for audio or video playback. Thisfact is insignificant for conventional servers because, not having aFIFO buffer or a buffer pointer for each user, audio/video data can onlybe sent as fast as it becomes available, or as fast as the pace at whichit must be delivered to the user in order to be properly replayed. Theuser, typically interacting with media player software on the user'scomputer, selects a media source requiring a data rate slower than thatavailable by the user's connection to the Internet. For example, if theuser's connection to the Internet is made via a 56,000 bits per secondmodem, the user might select a media source encoded for playback at24,000 bits per second.

With the present invention, as soon as a user connects to the server 12,the server 12 transmits audio/video data as sequential data elementsfrom its buffer 14 to the buffer 20 of the user, at a higher thanplayback rate. Unlike the prior art, media begins to play on the usercomputer 18 as soon as the user connection is made to the audio server12 and a minimal amount of data elements have been received and storedin the user's buffer 20. The user's buffer 20 is built up while themedia is playing. As each data element is played, it is deleted ordisplaced from the user's buffer 20.

Initially, the user buffer manager 22 requests the server 12 to sendmedia data elements to start the playback stream, such as by selecting aradio station from a list. The server 12 responds by sending dataelements to the user computer 18 at higher than the playback rate, untilthe entire FIFO buffer 14 has been sent to the user computer. Uponreceipt of the initial data elements, the user buffer manager 22 beginsplayback. Because (with reference to CBR content) this is a synchronoussystem with the source, server, and user computer operating by the sameplayback clock rate as determined by the encoding rate of the media, aseach data element is played out and is deleted or displaced from theuser buffer 20, another data element has been deposited into the serverbuffer 14 and is available to be sent to the user computer. Server 12sends the newly available data elements at a higher than playback rate.

Since the connection from the Internet to the user is faster than thatrequired for media playback, audio/video data is transmitted from theserver faster than it is played out by the user system, thus building upaudio/video data in the user buffer. For example, if the user'sconnection to the Internet is at 56,000 bits per second, and the datarate encoded for the media to be played is 24,000 bits per second, thebuffer level of the user buffer 20 will fill at the rate of 32,000 bitsper second (56,000 bits per second receive rate, minus 24,000 bits persecond playout depletion rate).

If, for example, the server buffer 14 held one minute of audio/videodata, eventually the user buffer 20 will hold one minute of audio/videodata. The effect is that, over a brief period of time, the server buffer14, or a designated portion of it, is transferred to the user buffer 20.In one embodiment, the number of data elements in the server buffer 14actually never changes, it always maintains one minute of audio/videodata. However, for the particular user under discussion, a copy of allthe data held in the buffer has been sent to the user. Since the userbuffer 20 now holds one minute of audio/video data, it can playcontinuously despite data reception interruptions of less than a minute.

Where some media data has been resent by the reliable transport layer,there may be more data to be sent than would be sent at the routineconstant fill rate, and in such a case the server transport mechanismwill again send the buffered media data at higher than the playbackrate. Similarly, if the media player buffer begins to deplete or becomesdepleted due to networking interruptions, the server will attempt tosend as much data as is necessary to rebuild the user computer's bufferto the proper level, again at higher than a playback rate. This allowsfor rebuilding the user's computer buffer under circumstances whereinInternet interruptions have blocked the normal flow of data.

Thus, as soon as the interruption ceases, the user buffer 20 can beginto rebuild, which will take place at higher than the playback rate. Themedia player can continue to play out the audio/video material while theuser buffer 20 rebuilds. When compared to conventional systems, whichprovide no capability to rebuild the user's computer buffer when data islost, the streaming media buffering system of the present inventionprovides for recovery of lost data elements and the restoration of theuser's buffer, even while the user media player continues to play.

Under conditions in which interruptions have interfered with the arrivalof sent media data to the user's computer, data loss exceeding certainlevels will cause the transport mechanism software to stop acceptingdata for transmission from the application software, namely thestreaming media server software. Although other arrangements arepossible within the scope of this invention, in preferred embodiments,the streaming media server software keeps track of the last data elementin the FIFO buffer that has been sent to each user, using a softwarepointer. Alternatively, or in addition, a feedback manager may beassociated with user computer 18, including means for sending to thesource server the serial number of the last data element received, orfor requesting more data. An interruption in the ability to send mediadata to a user results in the “last element” pointer “backing up” inFIFO buffer 14 in such a way that the server knows from what point inthe buffer to restart sending data when the transport mechanism againrequests data to send. When the server software receives thatnotification, it will begin sending data to the user starting from thenext data element to send as indicated by the pointer, and sending asmuch data as the transport mechanism will accept. The transportmechanism will again send this data as fast as it can to the user. Thisprocess continues until the steady state condition is again reachedwherein each data element is sent to the user as soon as it arrives fromthe media source, and a pre-determined number of data elements aremaintained in user buffer 20.

The predetermined buffer level in the user buffer 20 may be set at lessthan the predetermined buffer level of the server buffer 14 if desired.For example, the server buffer 14 might be set to hold one minute ofmedia data, and the user buffer 20 might be set to hold thirty secondsof media data. In another embodiment, a feedback manager 62 isassociated with the user computer 18. The feedback manager 62 isprovided with means for sending to the source server 12 the serialnumber of the last data element received. Feedback manager 62 has theform of software or firmware that tracks the last data element receivedand loaded into the user buffer. In addition, feedback manager 62 isadapted to send the serial number to the source server 12. In thismanner, the source server 12 sends the media as sequential data elementsat a rate dependent on the quality of the connection with each usercomputer 18. The media may come from a live source, shown as 25 in FIG.1, or from a stored file on the source server 12, or another storagedevice, such as a hard drive.

Implementation with Feedback Manager

The buffer manager at the source server effectively renders the sourcebuffer 14 a FIFO device holding a fixed amount of data with a constant,time-sequenced fill rate and a constant, time-sequenced depletion rate.Each audio/video data element carries a sequential serial number. Oncethe buffer 14 is full, each new audio/video data element, identified bya higher serial number, displaces the oldest audio/video data element,identified by the lowest serial number in the buffer 14. In the case ofan instantaneous media source, rather than audio/video data filling anddepleting the buffer, the top and bottom pointers spanning an amount ofaudio/video data equivalent to the desired buffer duration movesynchronously on a time-sequenced basis to the next higher serial numberof the audio/video data available in the system, thus defining thecontents of the buffer on a moment-by-moment basis. Thus, if the bufferis capable of holding 100 audio/video data elements, constituting oneminute of audio playback, the audio/video data elements within thebuffer would hold serial numbers of B (baseline)+Tr(transmitted)+(0−99), wherein, starting at some arbitrary value B forthe baseline, the serial number count would have been incremented by thenumber Tr representing the total number of data elements that have beentransmitted, and the buffer at any point in time would hold theaudio/video data elements in the range B+Tr+O to B+Tr+99. On the nextclock tick, the buffer holds B+(Tr+I)+O to B+(Tr+I)+99.

The unique pointer assigned to each user identifies by serial numbereither the last data element that was sent to that user, or the nextdata element to be sent. The selection of either mode is arbitrary; butwhichever mode has been selected, that mode is systematicallyimplemented. For purposes of this document, we will use the “last dataelement that was sent.” Thus, for any user, the pointer represents theserial number B+Tr+x, where x represents some value between 0 and 99, asbeing the serial number of the last audio/video data element that hadbeen sent to the user. Each time a data element is transmitted to theuser, x is incremented, pointing to the next higher value in the buffer.Each time a new data element is deposited in the buffer by the audiosource, x is decremented. Since audio/video data elements aretransmitted to the user faster than they are deposited into the buffer,x will increment faster than it decrements and over time will equal themaximum value of 99, pointing to the most recently deposited audio/videodata element.

The amount of data stored in the source server buffer 14 remains thesame, regardless of the pointer value associated with any individualuser. The pointer indicates the last data element that has beentransmitted to the user, and thus also identifies the next data elementto be transmitted to the user.

When the user's pointer equals B+Tr+99, which is the most recentlydeposited audio/video data element, the user computer 18 receivesaudio/video data in real time from the media source. The moment the nextaudio/video data element is deposited into the source server buffer 14,a copy of that data element is transmitted to the user. The user buffer18 will now contain 100 audio/video data elements, representing oneminute of audio/video data, that will be played on a FIFO basis. Ineffect, the source server buffer 14 has been moved to the user buffer20.

Since the user buffer 20 now holds one minute of audio/video data, itcan play continuously despite data reception interruptions of less thana minute, and as soon as the interruption ceases the user buffer 20 canbegin to rebuild.

The user computer 18 and the media server 12 are synchronized by afeedback manager in which the user computer 18 either acknowledges thereceipt of the serialized audio/video data packets, or requests the nextincrement of audio/video data packets. This feedback enables the sourceserver to keep track of the buffer pointer on each user's system.

Interrupts or delays in the flow of data from the source server to theuser will cause the user's system to play audio out of the bufferwithout the buffer being replenished at the same rate. Consequently, theuser buffer pointer will decrement at a faster pace than it increments,and the feedback mechanism will keep the source server buffer pointerfor that user synchronized. All of the users' source server bufferpointers also decrement with each tick of the clock, as data flows inand flows out of the fixed size buffer. Thus, as a user buffer drainsdown, the user's source server buffer pointer indexes down as well, inlockstep. Since new audio/video data is continuously placed into thesource server buffer from the source, this has the effect of rebuildingthe user's buffer at the server.

Once this system is set in motion, a buffer of a preset duration isconstantly maintained for each user, partially or completely at eithersource server or the listener's system, or ebbing and flowing betweenthem as a result of moment-to-moment circuit conditions.

Distribution Fed from a Separate Source

In another embodiment, the buffer concept of this invention can bedaisy-chained between multiple Servers. For example, a system mightinclude a source server computer co-located in a radio station studio,which transmits to a network distribution server resident in a datacenter, to which users would connect. The source server would fill itsbuffer, transfer the buffer to the network distribution server using theprocess just described for transferring a buffer from a source server toa user, and then the network distribution server would transfer itsbuffer to the user, again, using the process just described except nowwith the network distribution server replacing the source server indelivering audio/video data to the user system.

Such an embodiment is shown in FIG. 2. In this embodiment, the mediasource may be separate from the server 12, such as computer system 28located at a broadcast media source, such as a radio station studio.Computer system 28 is a logical element in a data network, and can bephysically collocated with the audio source, such as a computer residentin a radio station studio, or it can be remote from the audio source,such as a computer in a data center receiving digitized audio from adistant radio station.

This computer system 28 includes a source manager 30 which may beimplemented in software or firmware. The source manager 30 comprisesmeans for: receiving media data elements as they are generated by theaudio and/or video source, formatting media data according to therequirements of server 12, buffer 14, and buffer manager 16; and, fortransmitting that media data to server 12 as they are generated. Sourcemanager 30 may, as part of such formatting, include means fordigitizing, encoding, and packetizing the media data. Media datatypically is generated in real time such as by a speaker talking into amicrophone or by playing a CD.

Generally, computer system 28 transmits media data to server 12 in realtime as the media data is generated. Buffering of media data might occurat computer system 28 for convenience of programming, but such bufferingis incidental to the operation of the end-to-end system being described.Computer system 28 connects via the Internet 10, or other suitable datacommunications medium, to a server 12, wherein server buffer manager 16receives the media data for input into the FIFO buffer 14 as describedpreviously, and maintains the pre-determined number of data elements inthe FIFO buffer.

Server 12, in turn, transmits the media data to one or more usercomputers 18, also as previously described.

Example Methods

In another embodiment, shown in FIG. 3, the invention provides a methodfor distributing from a server via the Internet streaming media composedof a plurality of time-sequenced data elements.

Time-sequenced data elements are generated or received 32. Next, apredetermined number of the data elements is sequentially loaded 34 intoa server buffer, which process of 32 and 34 continues indefinitely aslong as there is media data available. Next, a group of the dataelements is sequentially sent 36 via the Internet from the server bufferto a user computer connected to the Internet, more rapidly than they areplayed out by the user system. Upon receipt by the user computer, thesent group of data elements is loaded 38 into a user buffer associatedwith the user computer. The user computer immediately plays 40 thereceived portion of the media on the user computer. At 42, if the userbuffer is not full, then additional data elements are sent to the usercomputer 36, again more rapidly than it is played out by the usersystem. And also at 42, if the user buffer is full, the system waitsuntil new media data is delivered to the server buffer 34. This processis repeated until the entire media file is played at the user computer.

In another embodiments, the steps depicted in FIG. 3 could be modifiedas follows. A serial number is assigned 30 to each of the plurality oftime-sequenced data elements. Next, a predetermined number of the dataelements is sequentially loaded 32 into a source buffer, and a group ofthe data elements is sequentially sent 34 via the Internet from thesource buffer to a user computer connected to the Internet. Upon receiptby the user computer, the sent group of data elements is loaded 36 intoa user buffer associated with the user computer. Then, the user computersends 38 to the source server the serial number of the last data elementreceived by the user computer. The user computer immediately plays 40the received portion of the media on the user computer. This process isrepeated until the entire media file is played at the user computer.Unlike conventional buffer arrangements, audio begins to play on theuser system as soon as the user connection is made to the audio sourceserver. The user's buffer is built up while the audio is playing.Advantageously, the system and method of this invention create a fasterthan real time connection. That is to say, audio/video data istransmitted from the server faster than it is played out by the usersystem, thus building up audio/video data in the user buffer.

In another embodiment, the server is connected to the Internet andprovisioned as initially described, and has available to it file basedmedia data as the source material. The file based media data can be readby the server which can deliver media data elements to the server FIFObuffer to the same effect as if the data had arrived from a broadcastmedia source. As before, the server provides a buffer manager and a FIFObuffer, and provides a means for receiving the sequentially arrangedmedia data elements from the file based media source and storing thosedata elements in the FIFO buffer.

The buffer manager comprises means for: receiving the media data;supplying media data in order to the FIFO buffer; supplying the FIFObuffer with a predetermined number of data elements; maintaining apointer into the buffer for each user computer indicating the last mediadata element that has been sent to that user, thus indicating the nextelement or elements to be sent; and, once the FIFO buffer is full,deleting the oldest data element in the buffer as each new data elementis received, said means arranged to maintain the predetermined number ofdata elements in the FIFO buffer. The server buffer manager, or aseparate process on the server, or a process on another computer havingaccess to the file based media data, provides for reading the media datafile and making available to the FIFO buffer sequentially arranged mediadata elements. At least one user computer is connected to the server viathe Internet. The user computer is associated with a media playersoftware incorporating a user buffer and comprises means for receivingand storing a predetermined number of media data elements which arereceived sequentially by the media player, playing the data outsequentially as audio and/or video, and deleting media data elementsfrom the buffer as they are played out. As data is played out, the nextsequential data elements are received from the server in such a fashionas to approximately maintain the predetermined number of data elementsin the user's buffer.

In another embodiment, the server is connected to the Internet andprovisioned as initially described. The server buffer manager, or themedia source, provides for sequentially numbering the media dataelements. The server buffer manager does not maintain a pointer into theserver buffer for each user. Instead, the media player buffer manager inthe user computer maintains a record of the serial number of the lastdata element that has been received.

Via the use of standard data communications protocol techniques such asTCP, the user computer transmits a request to the server to send one ormore data elements, specifying the serial numbers of the data elements.The server responds by sending the requested data elements, and dependsupon the reliable transmission protocol to assure delivery. The usercomputer then continues with additional data requests for the durationof playing the audio/video material. In this manner, the user computer,not the server, maintains the record of the highest data element numberstored in the user computer buffer. The media data will be transmittedto the user computer as fast as the data connection between the usercomputer and the server will allow. As before, the server provides abuffer manager and a FIFO buffer, and provides a means for receiving thesequentially numbered media data elements from a broadcast media sourceor a file based media source, and storing those data elements in theFIFO buffer. The buffer manager comprises means for: receiving the mediadata; supplying media data in order to the FIFO buffer; supplying theFIFO buffer with a predetermined number of data elements; and, once theFIFO buffer is full, deleting the oldest data element in the buffer aseach new data element is received.

Such means is arranged to maintain the pre-determined number of dataelements in the FIFO buffer. At least one user computer is connected tothe server via the Internet.

The user computer is associated with a media player softwareincorporating a user buffer and comprises means for receiving andstoring a predetermined number of media data elements which are receivedsequentially by the media player, playing the data out sequentially asaudio and/or video, and deleting media data elements from the buffer asthey are played out. As data is played out, the next sequential dataelements are requested from the server in such a fashion as toapproximately maintain the predetermined number of data elements in theuser's buffer.

In yet another embodiment, the invention provides a method fordistributing from a server via the Internet streaming media composed ofa plurality of time-sequenced data elements. A predetermined number ofthe data elements are sequentially loaded into a FIFO buffer. Additionaldata elements continue to be received.

As each new data element is input to the buffer, the oldest data elementis deleted from the buffer, maintaining in the buffer the samepredetermined number of data elements. At the request of a user computerfor connection to a media stream, a group of the data elements issequentially sent via the Internet from the FIFO buffer to the usercomputer connected to the Internet. Upon being received by the usercomputer, the sent group of data elements is loaded into a user's bufferassociated with the user computer.

The user's computer immediately begins to play the audio/video streamingmedia material. The server continues to send the next data elements insequence until the contents of the FIFO buffer have been sent. The dataelements are sent by the server as fast as the connection between theserver and user computer will allow. Once the contents of the FIFObuffer have been sent to a user computer, as each new data element isreceived into the FIFO buffer it is immediately sent to the usercomputer in such a manner as to keep the user computer buffer full. Theprocess repeats for substantially the entire time that the audio/videomaterial is played.

Unlike conventional buffering systems, audio begins to play on the usersystem as soon as the user connection to the audio server is effectedand a small amount of data has been transferred-conventional systemsrequired many seconds of data. Audio/video media data is initiallytransmitted from the server more rapidly than it is played out by theuser system, until the server buffer has been transferred to the usercomputer. The user's buffer is built up while the audio is playing, andcan be restored if it is diminished by data transmission interruptions.Advantageously, the system and method of this invention afford fasterdata transmissions than the playback data rate of the media data.Audio/video data is transmitted from the server more rapidly than it isplayed out by the user system under conditions wherein the user'scomputer buffer is not full.

The audio/video data in the user buffer accumulates; interruptions inplayback due to temporary Internet and modem delays are avoided. Itshould be realized that, although the invention has been describedhereinabove in connection with a process wherein the server sendsbuffered media data to the user “as fast as the network connection willpermit”, it is adequate, as mentioned in this paragraph, that thebuffered data be transferred from the server to the user at a ratefaster than the playback rate.

Although the preferred embodiment utilizes a reliable transportmechanism to move data between the server and the user, alternativeembodiments could incorporate this invention's buffering system incombination with an unreliable datagram-based transport mechanism.

Thus, it can be seen that the present invention provides a system andmethod for sending streaming media, such as audio or video files, viathe Internet. Immediate playing of the media on a user's computer isafforded while reducing interruptions in playback due to Internetcongestion and temporary delays. Delayed starts, heretofore required toprovide protection against interruption, are avoided. Data loss due tointerruptions in the receipt of media data by the media player can berecovered while the player continues to play out the audio or videomaterial. If the interruptions are so severe as to deplete the user'sbuffer and stop the play out, the media player will begin to play outagain as soon as the media player begins to receive media data withoutwaiting to first build up the buffer.

Having thus described the invention in detail, it should be understoodthat various changes, substitutions, and alterations may be readilyascertainable by those skilled in the art, and may be made hereinwithout departing from the spirit and scope of the invention as definedby the claims.

I claim:
 1. A method for distributing an audio or video program over theInternet, the method comprising: filling a first data structure of aserver system to a first predetermined level with sequential media dataelements, the server system comprising at least one computer, each mediadata element comprising a digitally encoded portion of a first audio orvideo program; maintaining approximately the first predetermined levelof media data elements in the first data structure by removing theoldest media data element from the first data structure at about theplayback rate of that oldest media data element; receiving at least onerequest, at the server system, via at least one data connection over theInternet, for the first audio or video program, each received requestoriginating from a requesting system, each requesting system comprisingat least one computer; sending, to each requesting system, any mediadata elements in the first data structure unsent to that requestingsystem, whenever such unsent media data elements are in the first datastructure, wherein, each sending is at a transmission rate as fast asthe data connection between the server system and each requesting systemallows; and all of the media data elements that are sent by the serversystem to the requesting systems are sent from the first data structureas the media data elements were first stored therein.
 2. The method ofclaim 1, further comprising: filling a second data structure of theserver system to a second predetermined level with sequential media dataelements, each media data element comprising a digitally encoded portionof a second audio or video program; maintaining approximately the secondpredetermined level of media data elements in the second data structureby removing the oldest media data element from the second data structureat about the playback rate of that oldest media data element; receivingat least one request, at the server system, via at least one dataconnection over the Internet, for the second audio or video program,each received request originating from a requesting system, eachrequesting system comprising at least one computer; and sending, to eachrequesting system, any media data elements in the second data structureunsent to that requesting system, whenever such unsent media dataelements are in the second data structure.
 3. The method of claim 1,further comprising: filling a second data structure of the server systemto a second predetermined level with sequential media data elements,each media data element comprising a digitally encoded portion of thefirst audio or video program; maintaining approximately the secondpredetermined level of media data elements in the second data structureby removing the oldest media data element from the second data structureat about the playback rate of that oldest media data element; receivingat least one request, at the server system, via at least one dataconnection over the Internet, for the first audio or video program, eachreceived request originating from a requesting system, each requestingsystem comprising at least one computer; and sending, to each requestingsystem, any media data elements in the second data structure unsent tothat requesting system, whenever such unsent media data elements are inthe second data structure.
 4. The method of claim 1, wherein eachrequesting system is associated with one of the at least one dataconnection.
 5. The method of claim 1, wherein the sending is via areliable transmission protocol.
 6. The method of claim 3, wherein thereliable transmission protocol is TCP.
 7. A server system fordistributing an audio or video program over the Internet, the serversystem comprising: at least one computer having a connection to theInternet; a machine-readable, executable routine containing instructionsto cause one of the at least one computers to fill a first datastructure of the server system to a first predetermined level withsequential media data elements, each media data element comprising adigitally encoded portion of a first audio or video program; amachine-readable, executable routine containing instructions to causeone of the at least one computers to maintain approximately the firstpredetermined level of media data elements in the first data structureby removing the oldest media data element from the first data structureat about the playback rate of that oldest media data element; amachine-readable, executable routine containing instructions to causeone of the at least one computers to receive at least one request, atthe server system, via at least one data connection over the Internet,for the first audio or video program, each received request originatingfrom a requesting system, each requesting system comprising at least onecomputer; a machine-readable, executable routine containing instructionsto cause one of the at least one computers to send, to each requestingsystem, any media data elements in the first data structure unsent tothat requesting system, whenever such unsent media data elements are inthe first data structure, wherein, each sending is at a transmissionrate as fast as the data connection between the server system and eachrequesting system allows; and all of the media data elements that aresent by the server system to the requesting systems are sent from thefirst data structure as the media data elements were first storedtherein.
 8. The server system of claim 7, further comprising: amachine-readable, executable routine containing instructions to causeone of the at least one computers to fill a second data structure of theserver system to a second predetermined level with sequential media dataelements, each media data element comprising a digitally encoded portionof a second audio or video program; a machine-readable, executableroutine containing instructions to cause one of the at least onecomputers to maintain approximately the second predetermined level ofmedia data elements in the second data structure by removing the oldestmedia data element from the second data structure at about the playbackrate of that oldest media data element; a machine-readable, executableroutine containing instructions to cause one of the at least onecomputers to receive at least one request, at the server system, via atleast one data connection over the Internet, for the second audio orvideo program, each received request originating from a requestingsystem, each requesting system comprising at least one computer; and amachine-readable, executable routine containing instructions to causeone of the at least one computers to send, to each requesting system,any media data elements in the second data structure unsent to thatrequesting system, whenever such unsent media data elements are in thesecond data structure.
 9. The server system of claim 7, furthercomprising: a machine-readable, executable routine containinginstructions to cause one of the at least one computers to fill a seconddata structure of the server system to a second predetermined level withsequential media data elements, each media data element comprising adigitally encoded portion of the first audio or video program; amachine-readable, executable routine containing instructions to causeone of the at least one computers to maintain approximately the secondpredetermined level of media data elements in the second data structureby removing the oldest media data element from the second data structureat about the playback rate of that oldest media data element; amachine-readable, executable routine containing instructions to causeone of the at least one computers to receive at least one request, atthe server system, via at least one data connection over the Internet,for the first audio or video program, each received request originatingfrom a requesting system, each requesting system comprising at least onecomputer; and a machine-readable, executable routine containinginstructions to cause one of the at least one computers to send, to eachrequesting system, any media data elements in the second data structureunsent to that requesting system, whenever such unsent media dataelements are in the second data structure.
 10. The server system ofclaim 7, wherein each requesting system is associated with one of the atleast one data connection.
 11. The server system of claim 7, wherein thesending is via a reliable transmission protocol.
 12. The server systemof claim 11, wherein the reliable transmission protocol is TCP.
 13. Acomputer program product for distributing an audio or video program overthe Internet from a server system comprising at least one computerhaving a connection to the Internet, the computer program productcomprising a non-transitory computer readable storage medium havingprogram instructions embodied therewith, the program instructionscomprising: instructions executable to cause one of the at least onecomputers to fill a first data structure of the server system to a firstpredetermined level with sequential media data elements, each media dataelement comprising a digitally encoded portion of a first audio or videoprogram; instructions executable to cause one of the at least onecomputers to maintain approximately the first predetermined level ofmedia data elements in the first data structure by removing the oldestmedia data element from the first data structure at about the playbackrate of that oldest media data element; instructions executable to causeone of the at least one computers to receive at least one request, atthe server system, via at least one data connection over the Internet,for the first audio or video program, each received request originatingfrom a requesting system, each requesting system comprising at least onecomputer; instructions executable to cause one of the at least onecomputers to send, to each requesting system, any media data elements inthe first data structure unsent to that requesting system, whenever suchunsent media data elements are in the first data structure, wherein,each sending is at a transmission rate as fast as the data connectionbetween the server system and each requesting system allows; and all ofthe media data elements that are sent by the server system to therequesting systems are sent from the first data structure as the mediadata elements were first stored therein.
 14. The computer programproduct of claim 13, further comprising: instructions executable tocause one of the at least one computers to fill a second data structureof the server system to a second predetermined level with sequentialmedia data elements, each media data element comprising a digitallyencoded portion of a second audio or video program; instructionsexecutable to cause one of the at least one computers to maintainapproximately the second predetermined level of media data elements inthe second data structure by removing the oldest media data element fromthe second data structure at about the playback rate of that oldestmedia data element; instructions executable to cause one of the at leastone computers to receive at least one request, at the server system, viaat least one data connection over the Internet, for the second audio orvideo program, each received request originating from a requestingsystem, each requesting system comprising at least one computer; andinstructions executable to cause one of the at least one computers tosend, to each requesting system, any media data elements in the seconddata structure unsent to that requesting system, whenever such unsentmedia data elements are in the second data structure.
 15. The method ofclaim 1, further comprising: instructions executable to cause one of theat least one computers to fill a second data structure of the serversystem to a second predetermined level with sequential media dataelements, each media data element comprising a digitally encoded portionof the first audio or video program; instructions executable to causeone of the at least one computers to maintain approximately the secondpredetermined level of media data elements in the second data structureby removing the oldest media data element from the second data structureat about the playback rate of that oldest media data element;instructions executable to cause one of the at least one computers toreceive at least one request, at the server system, via at least onedata connection over the Internet, for the first audio or video program,each received request originating from a requesting system, eachrequesting system comprising at least one computer; and instructionsexecutable to cause one of the at least one computers to send, to eachrequesting system, any media data elements in the second data structureunsent to that requesting system, whenever such unsent media dataelements are in the second data structure.
 16. The computer programproduct of claim 13, wherein each requesting system is associated withone of the at least one data connection.
 17. The computer programproduct of claim 13, wherein the sending is via a reliable transmissionprotocol.
 18. The computer program product of claim 17, wherein thereliable transmission protocol is TCP.
 19. A server system fordistributing a live audio or video program over the Internet, the serversystem comprising at least one computer having a connection to theInternet, the server system being adapted to: fill a first datastructure of the server system to a first predetermined level withsequential media data elements, each media data element comprising adigitally encoded portion of a first audio or video program; maintainapproximately the first predetermined level of media data elements inthe first data structure by removing the oldest media data element fromthe first data structure at about the playback rate of that oldest mediadata element; receive at least one request, at the server system, via atleast one data connection over the Internet, for the first audio orvideo program, each received request originating from a requestingsystem, each requesting system comprising at least one computer; send,to each requesting system, any media data elements in the first datastructure unsent to that requesting system, whenever such unsent mediadata elements are in the first data structure, wherein, each sending isat a transmission rate as fast as the data connection between the serversystem and each requesting system allows; and all of the media dataelements that are sent by the server system to the requesting systemsare sent from the first data structure as the media data elements werefirst stored therein.
 20. The server system of claim 19, further adaptedto: fill a second data structure of the server system to a secondpredetermined level with sequential media data elements, each media dataelement comprising a digitally encoded portion of a second audio orvideo program; maintain approximately the second predetermined level ofmedia data elements in the second data structure by removing the oldestmedia data element from the second data structure at about the playbackrate of that oldest media data element; receive at least one request, atthe server system, via at least one data connection over the Internet,for the second audio or video program, each received request originatingfrom a requesting system, each requesting system comprising at least onecomputer; and send, to each requesting system, any media data elementsin the second data structure unsent to that requesting system, wheneversuch unsent media data elements are in the second data structure. 21.The server system of claim 19, further adapted to: fill a second datastructure of the server system to a second predetermined level withsequential media data elements, each media data element comprising adigitally encoded portion of the first audio or video program; maintainapproximately the second predetermined level of media data elements inthe second data structure by removing the oldest media data element fromthe second data structure at about the playback rate of that oldestmedia data element; receive at least one request, at the server system,via at least one data connection over the Internet, for the first audioor video program, each received request originating from a requestingsystem, each requesting system comprising at least one computer; andsend, to each requesting system, any media data elements in the seconddata structure unsent to that requesting system, whenever such unsentmedia data elements are in the second data structure.
 22. The serversystem of claim 19, wherein each requesting system is associated withone of the at least one data connection.
 23. The server system of claim19, wherein the sending is via a reliable transmission protocol.
 24. Theserver system of claim 23, wherein the reliable transmission protocol isTCP.